perm filename MOPC.TC[CLS,LSP] blob
sn#854434 filedate 1988-03-13 generic text, type T, neo UTF8
!9!!3--1
!0Common Lisp Object System Specification!!3--1
!13. Metaobject Protocol!!3--1
!9CONTENTS!!3--2
!2Terminology!!3--7
!2Introduction!!3--8
!2The Classes in the CLOS Kernel!!3--10
!3Lattice of Kernel Classes!!3--10
!3Instances of class, built-in-class and structure-class!!3--11
!3Instances of standard-class!!3--11
!4allocate-instance!!3--12
!4check-initargs!!3--12
!4default-initargs!!3--12
!4Initializing standard-class!!3--13
!4class-default-direct-superclasses!!3--14
!4Example of specializing class-default-direct-superclasses!!3--14
!4valid-superclass-p!!3--15
!4valid-class-option-p!!3--15
!4valid-slot-description-p!!3--15
!4valid-slot-option-p!!3--15
!3Readers for Standard-class!!3--16
!4class-direct-superclasses!!3--16
!4class-direct-slots!!3--16
!4class-direct-options!!3--16
!4class-precedence-list!!3--16
!4class-finalized-p!!3--17
!4class-initialized-p!!3--17
!4class-prototype!!3--17
!4class-slots!!3--17
!4class-direct-slot-initargs!!3--17
!4class-slot-initargs!!3--18
!4class-direct-initargs!!3--18
!4class-initargs!!3--18
!4class-direct-initarg-defaults!!3--18
!4class-initarg-defaults!!3--19
!4class-direct-subclasses!!3--19
!4class-direct-methods!!3--19
!4class-direct-generic-functions!!3--20
!3Initializing standard-slot-description!!3--20
!3Readers for standard-slot-description!!3--21
!4slot-description-name!!3--21
!4slot-description-initform!!3--21
!4slot-description-initfunction!!3--21
!4slot-description-type!!3--21
!4slot-description-allocation!!3--21
!4slot-description-initargs!!3--21
!4slot-description-readers!!3--21
!4slot-description-writers!!3--21
!3Initialization for Methods!!3--21
!3Method Functions!!3--22
!4method-lambda!!3--22
!4method-function-p!!3--22
!4apply-method-lambda!!3--22
!3Readers for standard-method!!3--23
!4method-generic-function!!3--23
!4method-lambda-list!!3--23
!4method-specializers!!3--23
!4method-qualifiers!!3--23
!4method-function!!3--24
!3Initializing standard-accessor-methods!!3--24
!3Readers for standard-accessor-method!!3--24
!4method-applicable-class!!3--24
!4method-slot-name!!3--24
!4method-generic-function!!3--25
!4method-lambda-list!!3--25
!4method-specializers!!3--25
!4method-qualifiers!!3--25
!3Initializing Standard-generic-function!!3--25
!3Readers for Standard-generic-function!!3--26
!4generic-function-name!!3--26
!4generic-function-lambda-list!!3--26
!4generic-function-argument-precedence-order!!3--26
!4generic-function-method-class!!3--26
!4generic-function-declarations!!3--27
!4generic-function-method-combination!!3--27
!4generic-function-methods!!3--27
!4generic-function-initial-methods!!3--27
!4method-applicable-keywords!!3--27
!4add-method, remove-method, get-method!!3--27
!4add-method-on-specializer!!3--28
!4remove-method-on-specializer!!3--28
!3Initializing Method Combination Objects!!3--28
!3Readers for Method combination objects!!3--29
!4method-combination-name!!3--29
!4method-combination-options!!3--29
!4method-combination-order!!3--29
!4method-combination-operator!!3--29
!4method-combination-identity-with-one-argument!!3--29
!2Reinitialization and Updating Dependents!!3--30
!4reinitialize-instance for standard-object!!3--30
!4check-reinitargs!!3--30
!4update-dependents!!3--31
!4map-dependents!!3--31
!4add-dependent!!3--32
!4remove-dependent!!3--32
!4update-dependent!!3--32
!4reinitialize-instance for standard-class!!3--32
!4add-direct-subclass!!3--33
!4remove-direct-subclass!!3--33
!4update-dependent for standard-class!!3--33
!4finalize-inheritance!!3--35
!4reinitialize-instance for slot-description!!3--35
!4reinitialize-instance for methods!!3--35
!4reinitialize-instance for method-combination objects!!3--35
!4reinitialize-instance for standard-generic-function!!3--35
!2Expansions of the User Macros!!3--37
!3Expanding defclass forms!!3--37
!4add-named-class!!3--37
!4class-for-redefinition!!3--39
!3Expansion of defgeneric!!3--40
!4method-combination-object!!3--41
!3Expansion of defmethod!!3--41
!4add-named-method!!3--42
!4extract-lambda-list!!3--42
!4extract-specializers!!3--43
!3Expansion of define-method-combination!!3--43
!2The Slot Parsing Protocol!!3--47
!3slot-description-class!!3--47
!2Computing Inherited Information!!3--48
!4compute-class-precedence-list!!3--48
!3The Slot Inheritance Protocol!!3--48
!4collect-slot-descriptions!!3--48
!4compute-effective-slot-description!!3--49
!4Example of specializing compute-effective-slot-description!!3--49
!2The Instance Structure Protocol!!3--51
!3Slot Level Instance Access!!3--51
!4slot-value-using-class!!3--51
!4slot-value-using-class!!3--52
!4slot-boundp-using-class!!3--52
!4slot-makunbound-using-class!!3--52
!4slot-exists-p-using-class!!3--53
!4class-slot-value!!3--53
!3Access-Key Instance Access!!3--53
!4compute-class-access-keys!!3--53
!4class-access-keys!!3--54
!4allocate-standard-instance!!3--54
!4standard-instance-access!!3--54
!4standard-class-access!!3--55
!4standard-instance-missing!!3--55
!4standard-instance-unbound!!3--55
!4standard-instance-boundp!!3--55
!4standard-instance-makunbound!!3--56
!3The Instance Access Optimization Protocol!!3--56
!4optimizing slot-value!!3--57
!3Deoptimizing Instance Access!!3--57
!4can-deoptimize-slot-accesses-p!!3--57
!4deoptimize-slot-accesses!!3--57
!4deoptimize-standard-instance-access!!3--57
!2The Method Lookup Protocol!!3--59
!4compute-discriminator-code!!3--59
!4compute-effective-method!!3--60
!4compute-applicable-methods!!3--60
!4check-keyword-arguments!!3--60
!4make-method-call!!3--60
!3Example of using the Method Lookup Protocol!!3--61